package com.hspedu.common.valid;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;

import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * @author: xujiabing
 * @date: 2024/6/16 14:56
 * @description 自定义校验注解
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {EnumConstraintValidator.class})
public @interface EnumValidate {
    /**
     * 老韩解读
     * 1. 参考@NotNull 源码来开发
     * 2. EnumConstraintValidator.class 是自定义的真正的校验器，需要自己开发
     * 3. String message() default "{com.hspedu.common.valid.EnumValidate.message}" 表示如
     果校验错误，
     * 读取, resources\ValidationMessages.properties 的
     key=com.hspedu.common.valid.EnumValidate.message
     * 4.@Constraint(validatedBy = {?}) 表示此注解和哪个校验器关联
     */
    String message() default "{com.hspedu.common.valid.EnumValidate.message}";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    //增加values属性
    int[] values() default {};

    String regexp() default "";

}
